package com.proxy.demo.mybatis_proxy;

import org.springframework.cglib.proxy.Proxy;

/**
 * 有实现类接口是对 InvocationHandler#invoke 方法调用，invoke 方法通过反射调用被代理对象（SubjectImpl）方法（sayHello）
 * 无实现类接口则是仅对 InvocationHandler#invoke 产生调用。所以有实现类接口返回的是被代理对象接口返回值，而无实现类接口返回的仅是 invoke 方法返回值
 */
public class ProxyTest {
    public static void main(String[] args) {

        Subject proxy = (Subject) Proxy
                .newProxyInstance(
                        Subject.class.getClassLoader(),
                        new Class[]{Subject.class},
                        new ProxyInvocationHandler());

        String s = proxy.sayHello();
        System.out.println(s);
    }
}
